// ----------------------------------------------------------
// This Source Code Form is subject to the terms of the
// Mozilla Public License, v.2.0. If a copy of the MPL
// was not distributed with this file, You can obtain one
// at http://mozilla.org/MPL/2.0/.
// ----------------------------------------------------------
// Codebase: https://github.com/ArKuznetsov/cpdb/
// ----------------------------------------------------------
///////////////////////////////////////////////////////////////////////////////////////////////////
// Прикладной интерфейс

#Использовать "../../core"

#Область СлужебныйПрограммныйИнтерфейс

// Процедура - устанавливает описание команды
//
// Параметры:
//  Команда    - КомандаПриложения     - объект описание команды
//
Процедура ОписаниеКоманды(Команда) Экспорт
	
	Команда.Опция("pp params", "", "Файлы JSON содержащие значения параметров,
	                               | могут быть указаны несколько файлов разделенные "";""")
	       .ТСтрока()
	       .ВОкружении("CPDB_PARAMS");

	Команда.Опция("s src", "", "путь к исходному локальному файлу для разбиения")
	       .ТСтрока()
	       .Обязательный()
	       .ВОкружении("CPDB_FILE_SPLIT_SRC");
	
	Команда.Опция("a arch", "", "имя файла архива (не обязательный, по умолчанию <имя исходного файла>.7z)")
	       .ТСтрока()
	       .ВОкружении("CPDB_FILE_SPLIT_ARCH");
	
	Команда.Опция("l list", "", "имя файла, списка томов архива
	                            | (не обязательный, по умолчанию <имя исходного файла>.split)")
	       .ТСтрока()
	       .ВОкружении("CPDB_FILE_SPLIT_LIST");
	
	Команда.Опция("vs vol-size vol", "50m", "размер части {<g>, <m>, <b>} (по умолчанию 50m)")
	       .ТСтрока()
	       .ВОкружении("CPDB_FILE_SPLIT_SIZE");
	
	Команда.Опция("cl compress-level", 0, "уровень сжатия частей архива {0 - 9} (по умолчанию 0 - не сжимать)")
	       .ТЧисло()
	       .ВОкружении("CPDB_FILE_SPLIT_COMPRESS_LEVEL");
	
	Команда.Опция("ds delsrc", Ложь, "удалить исходный файл после выполнения операции")
	       .Флаговый()
	       .ВОкружении("CPDB_FILE_SPLIT_DEL_SRC");
	
КонецПроцедуры // ОписаниеКоманды()

// Процедура - запускает выполнение команды устанавливает описание команды
//
// Параметры:
//  Команда    - КомандаПриложения     - объект  описание команды
//
Процедура ВыполнитьКоманду(Знач Команда) Экспорт

	ЧтениеОпций = Новый ЧтениеОпцийКоманды(Команда);

	ВыводОтладочнойИнформации = ЧтениеОпций.ЗначениеОпции("verbose");

	ПараметрыСистемы.УстановитьРежимОтладки(ВыводОтладочнойИнформации);

	ПутьКФайлу       = ЧтениеОпций.ЗначениеОпции("src");
	ИмяАрхива        = ЧтениеОпций.ЗначениеОпции("arch");
	ИмяСпискаФайлов  = ЧтениеОпций.ЗначениеОпции("list");
	УдалитьИсточник  = ЧтениеОпций.ЗначениеОпции("delsrc");
	РазбитьНаТома    = ЧтениеОпций.ЗначениеОпции("vol-size");
	СтепеньСжатия    = ЧтениеОпций.ЗначениеОпции("compress-level");
	
	РаботаСФайлами.ЗапаковатьВАрхив(ПутьКФайлу,
	                                ИмяАрхива,
	                                ИмяСпискаФайлов,
	                                РазбитьНаТома,
	                                СтепеньСжатия,
	                                УдалитьИсточник);
	
КонецПроцедуры // ВыполнитьКоманду()

#КонецОбласти // СлужебныйПрограммныйИнтерфейс
